System, method, and computer program product for computing formal coverage data compatible with dynamic verification

ABSTRACT

The present disclosure is directed towards electronic circuit design and verification. Embodiments may include receiving, using a processor, source code corresponding to at least a portion of an electronic design and generating at least one coverage model for each of a dynamic verification and a formal verification. The method may further include determining a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status and consolidating the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.

FIELD OF THE INVENTION

This disclosure relates generally to formal verification of circuit designs, and more specifically to formal verification coverage metrics for formal verification of circuit designs.

DISCUSSION OF THE RELATED ART

Over the last 30 years, the complexity of integrated circuits has increased greatly. This increase in complexity has exacerbated the difficulty of verifying circuit designs. In a typical integrated circuit design process, which includes many steps, the verification step consumes approximately 70-80% of the total time and resources. Aspects of the circuit design such as time-to-market and profit margin greatly depend on the verification step. As a result, flaws in the design that are not found during the verification step can have significant economic impact by increasing time-to-market and reducing profit margins.

As the complexity in circuit design has increased, there has been a corresponding improvement in various kinds of verification and debugging techniques. In fact, these verification and debugging techniques have evolved from relatively simple transistor circuit-level simulation (in the early 1970s) to logic gate-level simulation (in the late 1980s) to the current art that uses Register Transfer Language (RTL)-level simulation. RTL describes the registers of a computer or digital electronic system and the way in which data are transferred among them.

Existing verification and debugging tools are used in the design flow of a circuit. The design flow begins with the creation of a circuit design at the RTL level using RTL source code. The RTL source code is specified according to a Hardware Description Language (HDL), such as Verilog HDL or VHDL. Circuit designers use high-level hardware description languages because of the size and complexity of modern integrated circuits. Circuit designs are developed in a high-level language using computer-implemented software applications, which enable a user to use text-editing and graphical design tools to create a HDL-based design.

In the design flow, creation of the RTL source code is followed by verification of the design to check if the RTL source code meets various design specifications. Formal verification is one such technique for verifying the circuit design. Formal verification uses mathematical techniques to prove that, under a set of constraints, a design property is either always correct or to provide an example condition (called a counterexample) that demonstrates the property is false. Tools that use formal methods to verify RTL source code and design properties are known as “model checkers.” Design properties to be verified include specifications and/or requirements that must be satisfied by the circuit design. Since mathematical properties define the design requirements in pure mathematical terms, this enables analysis of all possible valid inputs for a given circuit and is akin to an exhaustive simulation.

The effectiveness of formal verification depends on the completeness of the property set that is used to verify the circuit design. The property set should be sufficient to provide test coverage for a large portion of the circuit design. The degree to which the circuit design is tested with the property set during formal verification is quantified with a coverage metric. A low coverage metric indicates that more properties are needed to properly test the circuit design, whereas a high coverage metric indicates that the current property set is sufficient. However, existing coverage metrics overestimate the coverage of a property set and mislead the circuit designer into believing that the current property set provides sufficient test coverage during formal verification when it actually does not.

In some cases, under existing approaches, a user would need to manually analyze the formal coverage data set, attempt to map each cover item (or group of cover items) in the set to one in the dynamic coverage data set, and then determine if that coverage data item was covered by one or more engines. The user would then decide if that item should be counted as “covered” in the multiengine context.

Alternatively, a user could choose to use a single engine as the sole data set and achieve the coverage goal using only contributions from that engine, thus duplicating work of the other engines. The coverage data sets have been incompatible between formal and dynamic verification They have been incompatible in two ways. First, the coverage models produced have been mis-aligned. Coverage data is mapped to one or more models. Since the models have not been aligned, the resulting data sets have not been aligned. Second, the data sets produced have been incompatible due to formal coverage data being multi-dimensional. A cover item in formal verification may have up to three status types associated with it, while dynamic verification will have only one.

SUMMARY OF DISCLOSURE

In one or more embodiments of the present disclosure, a computer-implemented method is provided. The method may include receiving, using a processor, source code corresponding to at least a portion of an electronic design and generating at least one coverage model for each of a dynamic verification and a formal verification. The method may further include determining a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status and consolidating the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.

One or more of the following features may be included. In some embodiments, the method may include generating, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function. In some embodiments, the dynamic verification may include at least one of simulation and emulation. The method may include consolidating, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set. The method may also include generating, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item. The at least one user-selectable cover item may correspond to a subportion of the source code. The subportion may include a binary value.

In one or more embodiments of the present disclosure a computer-readable storage medium having stored thereon instructions, which when executed by a processor result in one or more operations is provided. Operations may include receiving, using a processor, source code corresponding to at least a portion of an electronic design and generating at least one coverage model for each of a dynamic verification and a formal verification. Operations may further include determining a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status and consolidating the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.

One or more of the following features may be included. In some embodiments, operations may include generating, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function. In some embodiments, the dynamic verification may include at least one of simulation and emulation. Operations may include consolidating, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set. Operations may also include generating, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item. The at least one user-selectable cover item may correspond to a subportion of the source code. The subportion may include a binary value.

In one or more embodiments of the present disclosure, a system for electronic design verification is provided. The system may include a computing device having at least one processor configured to receive source code corresponding to at least a portion of an electronic design. The at least one processor may be further configured to generate at least one coverage model for each of a dynamic verification and a formal verification. The at least one processor may be further configured to determine a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status. The at least one processor may be further configured to consolidate the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.

One or more of the following features may be included. In some embodiments, the at least one processor may be further configured to generate, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function. The dynamic verification may include at least one of simulation and emulation. The at least one processor may be further configured to consolidate, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set. The at least one processor may be further configured to generate, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item. The at least one user-selectable cover item may correspond to a subportion of the source code.

Additional features and advantages of embodiments of the present disclosure will be set forth in the description which follows, and in part will be apparent from the description, or may be learned by practice of embodiments of the present disclosure. The objectives and other advantages of the embodiments of the present disclosure may be realized and attained by the structure particularly pointed out in the written description and claims hereof as well as the appended drawings.

It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of embodiments of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are included to provide a further understanding of embodiments of the present disclosure and are incorporated in and constitute a part of this specification, illustrate embodiments of the present disclosure and together with the description serve to explain the principles of embodiments of the present disclosure.

FIG. 1A is a gate level representation of a circuit design that can be verified during formal verification, according to an embodiment of the present disclosure;

FIG. 1B is a RTL description of the circuit design of FIG. 1A that can be verified during formal verification, according to an embodiment of the present disclosure;

FIG. 2 is formal verification system for evaluating formal verification coverage of a circuit design, according to an embodiment of the present disclosure,

FIG. 3 is a method for evaluating formal verification coverage of a circuit design, according to an embodiment of the present disclosure;

FIG. 4 is a system diagram according to an embodiment of the present disclosure;

FIG. 5 is a flowchart depicting operations according to an embodiment of the present disclosure;

FIG. 6 is a diagram for computing formal coverage data compatible with dynamic verification according to an embodiment of the present disclosure;

FIG. 7 is a graphical user interface according to an embodiment of the present disclosure;

FIG. 8 is a graphical user interface according to an embodiment of the present disclosure; and

FIG. 9 is a graphical user interface according to an embodiment of the present disclosure.

DETAILED DESCRIPTION

Reference will now be made in detail to the embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. The present disclosure may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of the disclosure to those skilled in the art.

As will be appreciated by one skilled in the art, the present disclosure may be embodied as a method, system, or computer program product. Accordingly, the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present disclosure may take the form of a computer program product on a computer-usable storage medium having computer-usable program code embodied in the medium.

As used in any embodiment described herein. “circuitry” may include, for example, singly or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, and/or firmware that stores instructions executed by programmable circuitry. It should be understood at the outset that any of the operations and/or operative components described in any embodiment herein may be implemented in software, firmware, hardwired circuitry and/or any combination thereof.

Any suitable computer usable or computer readable medium may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium A computer-usable, or computer-readable, storage medium (including a storage device associated with a computing device or client electronic device) may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer-readable medium may include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device. In the context of this document, a computer-usable, or computer-readable, storage medium may be any tangible medium that can contain, or store a program for use by or in connection with the instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signal with computer readable program coded embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable. RF, etc., or any suitable combination of the foregoing.

Computer program code for carrying out operations of the present invention may be written in an object oriented programming language such as Java, Smalltalk, C++ or the like. However, the computer program code for carrying out operations of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

The present disclosure is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.

The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

One or more hardware description languages may be used in accordance with the present disclosure. Some hardware description languages may include, but are not limited to, Verilog. VHDL, SystemC, SystemVerilog and Verilog-AMS. Various other hardware description languages may also be used as well.

The Figures (FIG.) and the following description relate to preferred embodiments of the present disclosure by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of the present disclosure.

Reference will now be made in detail to several embodiments of the present disclosure(s), examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality. The figures depict embodiments of the present disclosure for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the disclosure described herein.

Embodiments of the present disclosure describe a formal verification system that generates more accurate formal verification coverage metrics for a circuit design. The formal verification system performs formal verification on a property to prove a correctness of the property. The property can have a cone of influence in the circuit design. A proof core is identified, which is a portion of the cone of influence that is sufficient to prove a correctness of the property P. Using the proof core, a coverage metric is generated for the circuit design that represents an amount of formal verification coverage provided by the property.

FIG. 1A is a gate level representation 102A of a circuit design that can be verified during formal verification, according to an embodiment FIG. 1A is a simple example of a circuit design that is included for the purposes of illustration only. In other embodiments, the circuit design may have different logic elements than that shown in FIG. 1A. Additionally, the circuit design may have many more logic elements than that shown in FIG. 1A.

The circuit design of FIG. 1A is a shift-register that includes a chain of five registers RG[0:4]. There are also logic elements (buffers, OR gates) between the output of one register RG and the input of the next register RG that control the propagation of data from one register RG to the next. The circuit design includes three signal inputs: “rst”, “a”, and “clk”. The “rst” signal is connected to a reset input of each register RG and resets all of the registers RG when asserted. The “clk” signal is connected to a clock input of each register RG and controls the timing of data propagation through the registers RG. The “a” signal includes input data that is to be shifted through the registers RG.

During formal verification, the circuit design is tested by attempting to prove the correctness of a property that has been written for the circuit design. A property is a specification or requirement that is to be satisfied by the circuit design and can describe a behavioral relationship between signals of the circuit design. An example of a property that can be verified during formal verification is the following property: state[2]|=>state[3](Property P) Property P includes two parameters, state[2] and state[3]. Property P means that when signal state[2] is logic 1 in a clock cycle, signal state[3] should also be logic 1 in the next immediate clock cycle.

Property P has a cone of influence (COI) 104A in the circuit design that includes portions of the circuit design capable of structurally affecting the signals of property P. As shown in FIG. 1A, the COI 104A includes registers RG[0:3], signals state[0:3], rst, a, clk and w[0:2], as well as most of the logic elements. The COI 104A of property P includes two registers RG2 and RG3 because these components directly generate the signals state[2] and state [3] that are specified by the property P The COI 104A also includes components and signals in the fan-in of registers RG2 and RG3, such as the rst and clk signals. The fan-in of each component can be traced backwards to establish the full COI 104A of property P.

Portions of the circuit design that are not in the recursive fan-in of the signals of property P are not within the COI 104A. For example, register RG4 is not within the COI 104A. This is because register RG4 only generates the state [4] signal that serves as an output of the circuit design and cannot affect the value of the state[2] or state[3] signals.

Property P also has a proof core 106A in the circuit design. The proof core 106A is a portion of the COI 104A that is sufficient for proving the correctness of property P during formal verification. As shown in FIG. 1A, the proof core 106A for property P includes registers RG[1:3], signals state[1:3] and w[0:2], input signals clk and rst, as well as some logic elements. The circuitry and signals within the proof core 106A are sufficient for proving the correctness of property P. The circuitry and signals outside of the proof core 106A, such as register RGO and signal state[O], are not needed for proving property P. This is because whenever the state[2] signal becomes a logic “1”, only the circuit elements between the state[2] and state [3] signals (e g. OR gate and buffer RG3) can affect whether the state[3] signal becomes logic “1” in the next clock cycle. By contrast, the status of the state[0] signal does not affect whether state[3] will change to logic “1” in the next clock cycle and can only affect whether the state[1] signal changes to logic “1” in the next clock cycle.

In one embodiment, proof core 106A is a portion of the COI 104A that is minimally sufficient for proving the property P A minimally sufficient proof core 106A includes only portions or part of the circuit design that are both sufficient and necessary for proving a property P. For example, the proof core 106A shown in FIG. 1A is sufficient for proving the property P but is not minimally sufficient. A minimally sufficient proof core 106A would only include registers RG[2:3], signals state[2:3] and w2, input signals rst and clk, the OR gate, and the buffer between state[2] and w2. Signal w1 is not needed to prove the property P because the OR gate will always output a value of “1” when the state[2] signal is logic “1”.

FIG. 1B is a RTL description 102B of the circuit design of FIG. 1A, according to an embodiment. The RTL description 102B includes several lines of code statements that describe the behavior of the circuit design. When synthesized, the RTL description 102B of FIG. 1B results in the gate level representation 102A of FIG. 1A.

Portions of the RTL description 102B can be traced to their equivalent circuitry from the gate level representation 102A. Statements 009-019 of the RTL description 102B result in the circuitry found inside the COI 104A of the gate level representation 102A. Statements 009-019 thus form the COI 104B at the RTL level. Statements 017-019 of the RTL description 102B result in the circuitry found inside the proof core 106A of the gate level representation 102A. Statements 017-019 thus form the proof core 106B at the RTL level. Note that the RTL level proof core 106B makes certain assumptions, such as assuming the circuit design is in a post-reset condition so that the rst signal can be ignored and also assuming that the registers will be triggered every cycle so that clk signal can be ignored. In other embodiments, the RTL level proof core 106B may include a different number of RTL statements. For the purposes of this description, COI 104 may be used to refer to any representation of the COI at any level of abstraction, and the proof core 106 can refer to any representation of the proof core at any level of abstraction.

Embodiments of the present disclosure use the proof core 106 to generate a coverage metric that indicates a level of formal verification coverage provided by a property. For example, the coverage metric may be a ratio of code statements that are in the RTL proof core 106B to all of the code statements in the RTL description 102B. Conventional coverage metrics rely only on the COI 104 to measure coverage, which results in coverage metrics that over-estimate the amount of coverage provided by a property. By narrowing the COI 104 down to a proof core 106 and leveraging the proof core 106 in generating the coverage metric, the coverage metric of the present disclosure more accurately represents how much of the circuit design is actually being tested by a particular property P.

FIG. 2 is formal verification system 200 for evaluating verification coverage of a circuit design, according to an embodiment. As shown, formal verification system 200 includes a formal verification module 202, a proof core module 204, a coverage metric module 208 and a presentation module 210. In one embodiment, the verification system 200 may be a computer and the modules are processor executable software instructions stored on a non-transitory computer readable medium of the computer.

Formal verification module 202 performs a formal verification of a circuit design using a set of properties and a set of signal constraints. Formal verification uses mathematical techniques to either prove that, under a set of constraints, each property in the set of properties is always correct or to provide an example condition (called a counterexample) that demonstrates the property is false. The counterexample can be a trace of signal inputs that cause the property to be false. In one embodiment, the formal verification module 202 is able to successfully prove that properties in the set of properties are always correct before providing the properties to the proof core module 204.

In one embodiment, the formal verification module 202 accesses a RTL description 102B of the circuit design, which may be written in HDL or other appropriate language. The formal verification module 202 converts the RTL description 102B into a format that is appropriate for formal verification. In one embodiment, the set of properties to be proven during formal verification may be embedded in the RTL description 102B or stored in a file that is separate from the RTL description 102B. The properties may also be assertions that are described in an assertion based verification language, such as System Verilog Assertion (SVA) or Property Specification Language (PSL).

The proof core module 204 identifies a proof core 106 for the set of properties verified as correct by the formal verification module 202. The proof core 106 is a portion of the COI 104A that is sufficient for proving the properties to be correct during formal verification. The computation of the proof core 106A also accounts for any signal constraints that were applied during formal verification.

In one embodiment, the proof core module 204 first identifies a gate level proof core 106A in the form of a gate level netlist that includes circuit elements and I or signals. The proof core module 204 then identifies a RTL level proof core 106B from the gate level proof core 106A. More specifically, the proof core 106 is computed using a satisfiability (SAT)-based model-checking algorithms using unsatisfiable core generation techniques. One example of such a technique is described in A Scalable Algorithm for Minimal Unsatisfiable Core Extraction, by Nachu, Dershowitz, Ziyad Hanna, and Alexander Nadel, 36-41 2006 SAT Conference, which is hereby incorporated by reference in its entirety.

Generally, a circuit design and property are synthesized into a gate level netlist and represented in conjunctive normal form (CNF). Proving the correctness of the property on a design is equivalent to proving that the CNF representation is not satisfiable (UNSAT), which means there do not exist assignments (or values) for the variables (e.g. flip flops and inputs) of the circuit design that makes the property false. It is known that if the CNF representation is UNSAT, there exists a subset of the formula (in CNF format) that is UNSAT too (in the worst case the subset is equal to the entire CNF). Such a subset can be called an UNSAT core, which is sufficient to prove that the property P is true. The proof core module 204 translates the property P and the circuit design into a gate level netlist, then to CNF. The proof core module 204 proves that the CNF is UNSAT, and then computes the UNSAT core.

The proof core module 204 then lifts the UNSAT core to the original circuit design by mapping the variables in the CNF representation to the gate level to identify the UNSAT core at the gate level, and then maps the gate level UNSAT core to RTL to identify the UNSAT core at the RTL This is a book-keeping process that maintains the name correspondence between inputs and registers in the RTL description 102B to the gate level representation 102A and the CNF variables. The resulted structure of the UNSAT core at the gate level becomes the gate level proof core 106A and the UNSAT core at the RTL description level becomes the RTL description proof core 106B.

The coverage metric module 208 generates a coverage metric that indicates a level of formal verification coverage provided by the set of properties that were tested during formal verification. A variety of different coverage models 214 can be used in generating the coverage metric. A coverage model 214 is a set of cover items, where each cover item represents an implicit or explicit event in the circuit design that is to be covered by the circuit design. For a given coverage model 214, an intersection between the cover items in the coverage model 214 and the RTL statements in the RTL proof core 106B is first determined in order to identify those cover items that are within the RTL proof core 106B. The coverage is then be computed as a percentage of the cover items that are found within the RTL proof core 106B relative to all of the cover items in the coverage model. For example, the coverage metric can be computed to be “40% coverage.” Higher coverage metrics indicate a better level of coverage, whereas lower coverage metrics indicate a lower level of coverage. The coverage can also be computed in other ways that represent a relationship between the subset of cover items that are covered by the RTL proof core 106B and all of the cover items. For example, the coverage metric can be a ratio of “4/10 cover items met.”

Three different types of coverage models 214 are shown in FIG. 2, a statement coverage model 214-1, a branch coverage model 214-2, and an expression coverage model 214-3. In other embodiments, other coverage models are also possible even though not shown in FIG. 2. The coverage metric module 208 can select from any of the coverage models 214 when generating the coverage metrics.

Statement coverage model 214-1 can include cover items in the form of one or more of the code statements in the RTL representation 102B of the circuit design. When statement coverage model 214-1 is used, the coverage metric module 208 generates a statement coverage metric that represents a level of statement coverage provided by the RTL proof core 106B. Different variations of statement coverage models 214-1 are possible. Some statement coverage models 214-1 only include assignment statements from the RTL representation 102B. Referring to FIG. 1B, assignment statements are found in lines 012, 015, 017, 018, 019, and 021 for a total of six assignment statements. An assignment coverage metric generated for the proof core 106B would thus be “3/6” assignment statements covered. Other statement coverage models 214-1 may include all of the statements in the RTL representation 102B. Branch coverage model 214-2 can include all of the branches in the RTL description 102B of the circuit design. When branch coverage model 214-2 is used, the coverage metric module 208 generates a branch coverage metric that represents a level of branch coverage provided by the RTL proof core 106B. For example, the branch coverage metric can be a percentage of code branches found within the RTL proof core 106B relative to all code branches within the RTL description 102B.

Expression coverage model 214-3 can include expression cover items for logic expressions and sub-expressions in the RTL description 102B of the circuit design. Expression coverage model 214-3 can be used to identify logic expressions and sub-expressions in the design and to create expression cover items for each expression. For example if the expression of the form A&B, then there are three cover items. A, B, and A&B. The cover items are then used to generate an expression coverage metric that represents a level of expression coverage provided by the RTL level proof core 106B. For example, the branch coverage metric can be a percentage of the expression cover items found within the RTL level proof core 106B.

In some embodiments, the statement model puts all statements in coverage model. They cover statements in COI to all statements. Thus, identifying a list of cover items within the proof core.

The presentation module 210 presents the coverage metric in a display so that the coverage metric can be viewed by a circuit designer. The circuit designer can then evaluate whether the amount of coverage provided by the tested properties is sufficient. If the coverage is not sufficient, the circuit designer may add additional properties to increase the level of coverage and then re-run the verification process to update the coverage metric.

FIG. 3 is a method for evaluating formal verification coverage of a circuit design, according to an embodiment. In one embodiment, the method of FIG. 3 is performed by the modules of FIG. 2.

In step 302, a formal verification is performed on a circuit design to prove a correctness of a property of the circuit design. The circuit design has a COI 104 that represents a portion of the circuit design capable of affecting signals of the property. In step 304, a gate level proof core 106A is identified. In step 306, a RTL level proof core 106B is identified from the gate level proof core 106A. Both proof cores 106A and 106B are a portion of the COI 104 that is sufficient to prove the correctness of the property P during formal verification.

In step 308, a coverage metric is generated that is indicative of a level of formal verification coverage provided by the property. This coverage metric is generated from the RTL level proof core 106B. Different coverage models, such as statement coverage model 214-1, branch coverage model 214-2, and expression coverage model 214-3, can be selected for generating the coverage metric that result in different types of coverage metrics. In step 310, the coverage metric 310 is presented in a display, which can then be viewed by a circuit designer to determine whether the level of formal verification coverage is sufficient or whether more properties are needed.

Formal verification provides functional verification with a set of user properties, but that doesn't provide data on how much of the design is exercised by the model checking engine. As discussed above, some systems may provide a design's information based on the un-sat core generated by the model checking engine. But this information is only at a level of design signals and for a user this is merely an approximation about the design exercised. Typically, the user wants more precise data in terms of well-defined code coverage models, like block, branch, expression.

In some embodiments, the passages above describe the paths for generating the Formal COI Covered and Formal Proof Covered metrics shown in FIG. 6. In some examples, the phrase “proof core” may be synonymous with “Proof Covered” or “Formal Proof Grade”). The phrase “stimuli covered”, as used herein, may indicate that a cover item can be reached/hit by a formal trace. In other words, formal model checking can find a trace to exercise the cover item.

Referring to FIG. 4, there is shown a dynamic verification process 10 that may reside on and may be executed by server computer 12, which may be connected to network 14 (e.g., the Internet or a local area network) Examples of server computer 12 may include, but are not limited to: a personal computer, a server computer, a series of server computers, a mini computer, and a mainframe computer. Server computer 12 may be a web server (or a series of servers) running a network operating system, examples of which may include but are not limited to: Microsoft® Windows® Server; Novell® NetWare®; or Red Hat® Linux®, for example (Microsoft and Windows are registered trademarks of Microsoft Corporation in the United States, other countries or both; Novell and NetWare are registered trademarks of Novell Corporation in the United States, other countries or both; Red Hat is a registered trademark of Red Hat Corporation in the United States, other countries or both; and Linux is a registered trademark of Linus Torvalds in the United States, other countries or both.) Additionally/alternatively, dynamic verification process 10 may reside on and be executed, in whole or in part, by a client electronic device, such as a personal computer, notebook computer, personal digital assistant, or the like.

The instruction sets and subroutines of dynamic verification process 10, which may include one or more software modules, and which may be stored on storage device 16 coupled to server computer 12, may be executed by one or more processors (not shown) and one or more memory modules (not shown) incorporated into server computer 12. Storage device 16 may include but is not limited to: a hard disk drive; a solid state drive, a tape drive; an optical drive; a RAID array, a random access memory (RAM); and a read-only memory (ROM). Storage device 16 may include various types of files and file types including but not limited, to hardware description language (HDL) files, which may contain the port type descriptions and executable specifications of hardware blocks.

Server computer 12 may execute a web server application, examples of which may include but are not limited to: Microsoft IIS, Novell Webserver™, or Apache® Webserver, that allows for HTTP (i.e., HyperText Transfer Protocol) access to server computer 12 via network 14 (Webserver is a trademark of Novell Corporation in the United States, other countries, or both; and Apache is a registered trademark of Apache Software Foundation in the United States, other countries, or both). Network 14 may be connected to one or more secondary networks (e.g., network 18), examples of which may include but are not limited to: a local area network; a wide area network, or an intranet, for example.

Server computer 12 may execute an electronic design automation (EDA) application (e.g., EDA application 20), examples of which may include, but are not limited to those available from the assignee of the present application EDA application 20 may interact with one or more EDA client applications (e.g., EDA client applications 22, 24, 26, 28) for electronic design optimization.

Dynamic verification process 10 may be a stand alone application, or may be an applet/application/script that may interact with and/or be executed within EDA application 20. In addition/as an alternative to being a server-side process, dynamic verification process 10 may be a client-side process (not shown) that may reside on a client electronic device (described below) and may interact with an EDA client application (e.g., one or more of EDA client applications 22, 24, 26, 28). Further, dynamic verification process 10 may be a hybrid server-side/client-side process that may interact with EDA application 20 and an EDA client application (e.g., one or more of client applications 22, 24, 26, 28). As such, dynamic verification process 10 may reside, in whole, or in part, on server computer 12 and/or one or more client electronic devices.

The instruction sets and subroutines of EDA application 20, which may be stored on storage device 16 coupled to server computer 12 may be executed by one or more processors (not shown) and one or more memory modules (not shown) incorporated into server computer 12.

The instruction sets and subroutines of EDA client applications 22, 24, 26, 28, which may be stored on storage devices 30, 32, 34, 36 (respectively) coupled to client electronic devices 38, 40, 42, 44 (respectively), may be executed by one or more processors (not shown) and one or more memory modules (not shown) incorporated into client electronic devices 38, 40, 42, 44 (respectively). Storage devices 30, 32, 34, 36 may include but are not limited to: hard disk drives; solid state drives, tape drives; optical drives; RAID arrays; random access memories (RAM); read-only memories (ROM), compact flash (CF) storage devices, secure digital (SI)) storage devices, and a memory stick storage devices. Examples of client electronic devices 38, 40, 42, 44 may include, but are not limited to, personal computer 38, laptop computer 40, mobile computing device 42 (such as a smart phone, netbook, or the like), notebook computer 44, for example. Using client applications 22, 24, 26, 28, users 46, 48, 50, 52 may access EDA application 20 and may allow users to e.g., utilize dynamic verification process 10.

Users 46, 48, 50, 52 may access EDA application 20 directly through the device on which the client application (e.g., client applications 22, 24, 26, 28) is executed, namely client electronic devices 38, 40, 42, 44, for example Users 46, 48, 50, 52 may access EDA application 20 directly through network 14 or through secondary network 18. Further, server computer 12 (i.e., the computer that executes EDA application 20) may be connected to network 14 through secondary network 18, as illustrated with phantom link line 54.

The various client electronic devices may be directly or indirectly coupled to network 14 (or network 18). For example, personal computer 38 is shown directly coupled to network 14 via a hardwired network connection. Further, notebook computer 44 is shown directly coupled to network 18 via a hardwired network connection. Laptop computer 40 is shown wirelessly coupled to network 14 via wireless communication channel 66 established between laptop computer 40 and wireless access point (i.e., WAP) 68, which is shown directly coupled to network 14. WAP 68 may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/or Bluetooth device that is capable of establishing wireless communication channel 66 between laptop computer 40 and WAP 68. Mobile computing device 42 is shown wirelessly coupled to network 14 via wireless communication channel 70 established between mobile computing device 42 and cellular network/bridge 72, which is shown directly coupled to network 14.

As is known in the art, all of the IEEE 802.11x specifications may use Ethernet protocol and carrier sense multiple access with collision avoidance (i.e., CSMA/CA) for path sharing. The various 802.11x specifications may use phase-shift keying (i.e., PSK) modulation or complementary code keying (i.e., CCK) modulation, for example. As is known in the art, Bluetooth is a telecommunications industry specification that allows e.g., mobile phones, computers, and personal digital assistants to be interconnected using a short-range wireless connection.

Client electronic devices 38, 40, 42, 44 may each execute an operating system, examples of which may include but are not limited to Microsoft Windows, Microsoft Windows CE®, Red Hat Linux, or other suitable operating system. (Windows CE is a registered trademark of Microsoft Corporation in the United States, other countries, or both.)

Referring now to FIG. 5, an exemplary flowchart showing operations consistent with an embodiment of dynamic verification process 10 is provided. Operations may include receiving (502), using a processor, source code corresponding to at least a portion of an electronic design and generating (504) at least one coverage model for each of a dynamic verification and a formal verification. The method may further include determining (506) a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status and consolidating (508) the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.

Referring now to FIGS. 6-7, embodiments consistent with dynamic verification process 10 are provided. Verification measurement on a design project is often achieved using multiple verification engines. For example, simulation, emulation, and formal verification. Different portions or aspects of a design may each be verified using separate engines. For example, feature “A” in the design may be verified using dynamic verification, while feature “B” may be verified using formal verification. And a feature “‘c’” may be verified using both.

Completeness of the verification effort is often measured using coverage data. While coverage data is readily available from each of these engines, there has historically been no means for producing a combined data set which reflects the coverage contribution from all engines. This would provide high value, as it enables a way to reach a coverage goal, or “signoff” (e.g., 100% coverage) faster.

The primary challenge has been combining two inherently different coverage data sets—coverage data from formal engines and coverage data from dynamic engines (simulation and/or emulation).

Accordingly, embodiments of dynamic verification process 10 may provide a mechanism for computing a formal coverage data set that is compatible with a dynamic coverage data set and suitable for producing a combined coverage result. In some embodiments, dynamic verification process 10 may achieve this by first producing coverage model(s) aligned with dynamic coverage data, then using the aligned model(s) for producing the formal coverage data. Finally, the data set may be transformed to align it to the dynamic coverage data set. FIG. 8 shows an example of a screenshot showing how this is alignment is controlled at the front end. Although this example depicts command-line control it may also be implemented in a GUI menu or other suitable display.

Referring again to FIG. 6, in some embodiments the formal verification tool may produce one or more coverage models for an electronic design coded in a hardware design language. In some cases a cover item may be needed for a subportion of the source code (e.g. for every line of code, etc.). The formal verification tool may produce the models aligned with the models that are produced by dynamic verification tools. In other words, for a given hardware design, it will produce a model equivalent to the dynamic verification tool.

In some embodiments, the formal verification tool may compute a formal data set using the aligned coverage models as its input. It does this by first expanding each model into a second dimension. An item in the original model which was previously represented coverage status, now may be represented by three distinct items. Some of these may include, but are not limited to stimuli coverage status, COI coverage status, and proof coverage status as was discussed in further detail above FIG. 9 shows an example of a screenshot showing of the user control of this consolidation function. Although this example depicts command-line control it may also be implemented in a GUI menu or other suitable display.

In some embodiments, one or more formal engines may compute coverage, mapping to this expanded model to produce a formal coverage data set. However, this data set is still not compatible with a dynamic coverage data set, as it contains roughly three times the number of data items.

In some embodiments, the formal tool may transform its data set by performing a three-to-one consolidation of the data set. Dynamic verification process 10 may employ a user programmable function that may be implemented that looks at each of the stimuli coverage, COI coverage, and proof coverage status to produce a single coverage status.

For example, a user could decide that their consolidation criteria for considering a coverage item “A” as being “covered” is Stimuli coverage status=covered AND Proof coverage status=covered. As such, the consolidated coverage status of “A” would be computed as follows:

if (A_Stimuli==covered && A_Proof==covered)

A=covered

else

A=uncovered

The end result is a formal coverage data set that may be fully compatible with dynamic coverage for purposes of merging or producing a combined coverage data set. In some embodiments, this new data set may also be useful for standalone analysis of formal coverage.

Referring also to FIG. 7, an example graphical user interface 700 is provided. GUI 700 displays a formal average grade, a formal stimuli average grade, and a formal proof average grade. The right two columns show data from the formal stimuli covered, formal COI covered, and formal proof covered items shown in FIG. 6. Numerous other grades may also be calculated and displayed, for example, a formal cone of influence grade, etc.

Accordingly, embodiments of dynamic verification process 10 may provide tool automation to produce a formal coverage data set that can be merged with a dynamic coverage data set. As such, the teachings of the present disclosure may save effort of manual analysis and computation of a combined (formal+dynamic) coverage result. It also enables faster project signoff (achieving 100% coverage) by allowing the contribution of all coverage sources. Outside of the combined coverage usage, dynamic verification process 10 may also give a unique consolidated coverage metric which is useful for project tracking purposes.

The foregoing description of the embodiments of the disclosure has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the embodiments to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.

Some portions of this description describe the embodiments of the disclosure in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.

Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a non-transitory computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.

Embodiments of the disclosure may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a tangible computer readable storage medium or any type of media suitable for storing electronic instructions, and coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.

Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the disclosure be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments is intended to be illustrative, but not limiting, of the scope of the disclosure, which is set forth in the following claims.

It will be apparent to those skilled in the art that various modifications and variations can be made in the embodiments of the present disclosure without departing from the spirit or scope of the present disclosure. Thus, it is intended that embodiments of the present disclosure cover the modifications and variations provided they come within the scope of the appended claims and their equivalents. 

The invention claimed is:
 1. A computer-implemented method comprising: receiving, using a processor, source code corresponding to at least a portion of an electronic design; generating at least one coverage model for each of a dynamic verification and a formal verification; determining a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status; and consolidating the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.
 2. The computer-implemented method of claim 1, further comprising: generating, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function.
 3. The computer-implemented method of claim 1, wherein the dynamic verification includes at least one of simulation and emulation.
 4. The computer-implemented method of claim 1, further comprising: consolidating, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set.
 5. The computer-implemented method of claim 1, further comprising: generating, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item.
 6. The computer-implemented method of claim 5, wherein the at least one user-selectable cover item corresponds to a subportion of the source code.
 7. The computer-implemented method of claim 6, wherein the subportion includes a binary value.
 8. A non-transitory computer-readable storage medium having stored thereon instructions, which when executed by a processor result in one or more operations, the operations comprising: receiving, using a processor, source code corresponding to at least a portion of an electronic design; generating at least one coverage model for each of a dynamic verification and a formal verification; determining a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status; and consolidating the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.
 9. The computer-readable storage medium of claim 8, further comprising: generating, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function.
 10. The computer-readable storage medium of claim 8, wherein the dynamic verification includes at least one of simulation and emulation.
 11. The computer-readable storage medium of claim 8, further comprising: consolidating, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set.
 12. The computer-readable storage medium of claim 8, further comprising: generating, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item.
 13. The computer-readable storage medium of claim 12, wherein the at least one user-selectable cover item corresponds to a subportion of the source code.
 14. The computer-readable storage medium of claim 13, wherein the subportion includes a binary value.
 15. A system comprising: a computing device having at least one processor configured to receive source code corresponding to at least a portion of an electronic design, the at least one processor further configured to generate at least one coverage model for each of a dynamic verification and a formal verification, the at least one processor further configured to determine a formal data set including stimuli coverage status, cone of influence coverage status, and proof coverage status, the at least one processor further configured to consolidate the formal data set using a user-programmable consolidation function to generate a combined formal coverage data set.
 16. The system of claim 15 wherein the at least one processor is further configured to generate, at a graphical user interface, a display corresponding to at least a portion of the user-programmable consolidation function.
 17. The system of claim 15 wherein the dynamic verification includes at least one of simulation and emulation.
 18. The system of claim 15 wherein the at least one processor is further configured to consolidate, using the user-programmable consolidation function, the combined formal coverage data set, a simulation coverage data set, and an emulation coverage data set to generate a combined coverage set.
 19. The system of claim 15 wherein the at least one processor is further configured to generate, at a graphical user interface, a display showing one or more of a formal grade, a formal stimuli grade, a formal cone of influence grade, and a formal proof grade for at least one user-selectable cover item.
 20. The system of claim 19, wherein the at least one user-selectable cover item corresponds to a subportion of the source code. 